/*
pread、pwrite的一些用法
验证：
    1、不会更新文件表里面到当前位置偏移量
*/

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>

int main()
{
    unsigned char buf[100];
    int fd;
    int ret;

    /*打开文件test_file*/
    fd = open("test_file",O_RDWR|O_CREAT|O_EXCL,S_IRWXU|S_IRWXG);
    if(-1 == fd)
    {
        perror("open error");
        exit(-1);
    }

    /*使用pread函数读取数据（从偏移1024字节处开始读取）*/
    ret=pread(fd,buf,sizeof(buf),1024);
    if(-1 == ret)
    {
        perror("pread error");
        goto err;
    }

    /*获取当前位置偏移量*/
    ret = lseek(fd,0,SEEK_CUR);
    if(-1 == ret)
    {
        perror("lseek error");
        goto err;
    }

    printf("Current Offset:%d\n",ret);
    ret = 0;
    err:
        /*关闭文件*/
        close(fd);
        exit(ret);
}